#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
// 4. dup2
int main()
{
    umask(0);
    int fd=open("log.txt",O_CREAT|O_RDWR,0666);
    close(1);
    dup(fd,1);
    for(;;)
    {
        char buff[1024];
        int size = read(0,buff,sizeof(buff)-1);
        buff[size]=0;
        printf("%s",buff);
        fflush(stdout);
    }
    return 0;
}



// 3. 理解重定向
//int main()
//{
//    close(1);
//    open("myfile",O_WRONLY);
//    const char* msg="hello world!\n";
//    int count = 5;
//    while(count--)
//        printf("%d:%s",count,msg);
//    return 0;
//}


// 2. 文件描述符的分配规则
//int main()
//{
//    // close(0);
//    //close(1);
//    close(2);
//    int fd = open("hello.txt",O_RDONLY|O_CREAT);
//    printf("fd: %d\n",fd);
//    return 0;
//}




// 1. 另一种输入输出的方式
//int main()
//{
//    char buff[1024];
//    int s = read(0,buff,sizeof(buff));
//    if(s>0)
//    {
//        buff[s]=0;
//        write(1,buff,strlen(buff));
//        write(2,buff,strlen(buff));
//    }
//    return 0;
//}

